// 使用 pinia 来存储用户登录的信息 和 用户名 的信息

// 导入创建 pinia 的方法
import { ref } from 'vue'
import { defineStore } from 'pinia'
import { getUserInfo } from '@/apis/users'

interface UserInfo {
  username: string
  userid: string
  avatar: string
  [key: string]: any
}

interface ResponseInfo {
  code: string
  message: string
  data: Array<UserInfo>
}

// 创建仓库
const useUserInfo = defineStore('userInfo', () => {
  // 创建一个表示当前是否登录了的数据
  const is_login = ref<boolean>(false)

  // 创建一个表示当前用户名的数据
  const username = ref<string>('')

  // 准备一个方法
  // 修改 is_login
  const changeLogin = (info: boolean) => is_login.value = info

  // 准备一个请求个人信息的方法
  const getUser = async (id: string) => {
    // 发送请求请求个人信息
    const res = await getUserInfo(id)

    // 判断登录信息
    if ((res as unknown as ResponseInfo).code !== '200') {
      is_login.value = false
      return
    }

    // 代码到这里, 表示登录成功了
    is_login.value = true
    // 给 username 赋值
    username.value = res.data[0].username
  }

  // 导出仓库内的所有内容
  return {
    is_login,
    username,
    changeLogin,
    getUser
  }
})

// 导入仓库
export default useUserInfo
